
package com.ctrip.corp.obt.shard.sql.parser.tenant;


import net.sf.jsqlparser.expression.Expression;

/**
 * 租户处理器（ TenantId 行级 ）
 *
 * @author marco.zheng
 * @since 2022-02-10
 */
public interface TenantHandler {

    /**
     * 获取租户 ID 值表达式，支持多个 ID 条件查询
     * <p>
     * 支持自定义表达式，比如：tenant_id in (1,2) @since 2019-8-2
     *
     * @return 租户 ID 值表达式
     */
    Expression getTenantId();

    /**
     * 获取租户字段名
     *
     * @return 租户字段名
     */
    String getTenantIdColumn();

    /**
     * 根据表名判断是否进行过滤
     *
     * @param tableName 表名
     * @return 是否进行过滤, true:表示忽略，false:需要解析多租户字段
     */
    boolean ignoreTable(String tableName);
}
